home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 25 / AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / Updates / HD-Installer / jst_dev / InstallWizard / source / loadseg.asm < prev    next >
Assembly Source File  |  2000-04-12  |  996b  |  56 lines

  1.     cnop    0,4
  2.  
  3. ; loads an executable by calling OSEmu LoadSeg()
  4. ;
  5. ; < A0: name of the executable
  6. ; > A1: start address (do a JSR (a1) to start the program)
  7. ; ** no checks are done there so be careful **
  8.  
  9. LoadExecutable:
  10.     movem.l    A2-A6/D0-D7,-(A7)
  11.     move.l    A0,-(A7)
  12.     MOVE.L    $4.W,A6            ;OPEN DOSLIB FOR USE (THE EMU
  13.     MOVEQ.L    #0,D0            ;PROVIDES THE FUNCTIONS)
  14.     LEA    dosname(PC),A1
  15.     JSRLIB    OpenLibrary
  16.     RELOC_MOVEL    D0,dosbase
  17.     MOVE.L    D0,A6
  18.     move.l    (A7)+,A0
  19.  
  20.     MOVE.L    A0,D1
  21.     JSRLIB    LoadSeg
  22.     RELOC_MOVEL    D0,loaderseg
  23.  
  24.     LSL.L    #2,D0
  25.     MOVE.L    D0,A1
  26.     ADDQ.L    #4,A1
  27.  
  28.     lea    progargs(pc),A0
  29.     move.l    A0,D0
  30.     JSRGEN    StrlenAsm    ; arguments length
  31.  
  32.     JSRGEN    FlushCachesHard
  33.     movem.l    (A7)+,A2-A6/D0-D7
  34.     rts
  35.  
  36. ; unloads previously loaded executable
  37.  
  38. UnloadExecutable:
  39.     STORE_REGS
  40.     move.l    dosbase(pc),A6
  41.     move.l    loaderseg(pc),D1
  42.     JSRLIB    UnLoadSeg
  43.     RESTORE_REGS
  44.     rts
  45.  
  46. loaderseg:
  47.     dc.l    0
  48. dosbase:
  49.     dc.l    0
  50. progargs:
  51.     ; your arguments here (ex: dc.b "/f data1")
  52.     dc.b    10,0        ; linefeed + null termination
  53. dosname:
  54.     dc.b    "dos.library",0
  55.  
  56.